package com.tledu.mr;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class StreamingPacket {
    public static void main(String[] args) throws IOException {
        // 1. 逐行读取数据
        String path = "C:\\Users\\cyrus\\Desktop\\毕设公开课\\hdfs-job021\\data\\whitelist_data\\input_filter.txt";
        //  IO流的分类
        //      输入流和输出流
        //      字节流和字符流
        FileInputStream fis = new FileInputStream(path);
        // 字符缓冲流
        BufferedReader br = new BufferedReader(new InputStreamReader(fis));
        // 2. 进行分组操作，分组的依据，判断key和之前的是否一样，如果一样加入到之前那一组，不一样代表之前分组完成输出之前的组，创建新的组
        String line = "";
        // 存放之前的key
        String preKey = null;
        // 存放之前的key对应的value值的集合
        List<String> values = new ArrayList<>();
        while ((line = br.readLine()) != null) {
            // line  ->  s1 80
            String[] lineArr = line.split(" ");
            // 判断和之前的是否一样
            if (preKey == null) {
                // 第一条记录刚进来
                preKey = lineArr[0];
                values.add(lineArr[1]);
            } else if (preKey.equals(lineArr[0])) {
                // 和之前的一样，代表这个属于之前的这个组的
                values.add(lineArr[1]);
            } else {
                // 不一样，代表preKey分组完成，就可以交给reducer处理的，我们这里就直接输出了
                System.out.println("key：" + preKey + ",value:" + values.toString());
                // 重新开始记录了
                preKey = lineArr[0];
                values.clear();
                values.add(lineArr[1]);
            }
        }
        // 输出最后一项的值
        System.out.println("key：" + preKey + ",value:" + values.toString());
        br.close();

    }
}
